// 主路由文件
const expressModule = require('../zh/后端/Express');
const 用户控制器 = require('../controllers/userController');
// 引入中间件和服务
const { 创建验证中间件, 用户名规则, 密码规则, ID规则 } = require('../middleware/validation');
const { 认证检查, 角色检查 } = require('../middleware/auth');

const 路由器 = expressModule.创建路由器();

// 示例路由
expressModule.监听GET请求(路由器, '/hello', (请求, 响应) => {
  expressModule.发送JSON(响应, {
    message: 'Hello World!',
    timestamp: new Date().toISOString()
  });
});

// 用户相关路由 - 使用控制器处理
// 登录路由
expressModule.监听POST请求(路由器, '/login', 
  创建验证中间件({ 用户名: 用户名规则, 密码: 密码规则 }),
  用户控制器.用户登录
);

// 创建认证路由组
const 认证路由组 = expressModule.创建路由器();

// 获取用户信息
expressModule.监听GET请求(认证路由组, '/user/:id', 
  创建验证中间件({ id: ID规则 }),
  用户控制器.获取用户信息
);

// 获取会话信息
expressModule.监听GET请求(认证路由组, '/session', 用户控制器.获取会话信息);

// 用户登出
expressModule.监听POST请求(认证路由组, '/logout', 用户控制器.用户登出);

// 获取当前用户信息
expressModule.监听GET请求(认证路由组, '/user', 用户控制器.获取当前用户);

// 创建管理员路由组
const 管理员路由组 = expressModule.创建路由器();

// 获取用户列表
expressModule.监听GET请求(管理员路由组, '/users', 用户控制器.获取用户列表);

// 禁用用户
expressModule.监听PUT请求(管理员路由组, '/user/:id/disable', 
  创建验证中间件({ id: ID规则 }),
  用户控制器.禁用用户
);

// 启用用户
expressModule.监听PUT请求(管理员路由组, '/user/:id/enable', 
  创建验证中间件({ id: ID规则 }),
  用户控制器.启用用户
);

// 应用中间件
路由器.use(认证检查, 认证路由组); // 这些路由需要认证
路由器.use(认证检查, 角色检查('管理员'), 管理员路由组); // 这些路由需要管理员权限

module.exports = 路由器;